var IMG_MINUS = 'img/m.png';
var IMG_PLUS = 'img/p.png';
var DET_SHOW = 'img/detailsShow.png';
var DET_HIDE = 'img/detailsHide.png';

var levels = ["ok", "warn", "error", "fatal"];

$(document).ready(function () {
    $('.lnk_toggle_child').click(function () {
        var start_id = $(this).attr('id').split('_')[3];
        toggleNode(start_id);
        return false;
    });

    $('.lnk_toggle_details').click(function () {
        var start_id = $(this).attr('id').split('_')[2];
        var details_div = $("#details_" + start_id);
        var myImg = $(this).find("img");

        if (details_div.is(":hidden")) {
            details_div.show();
            myImg.attr('src', DET_HIDE);
        } else {
            details_div.hide();
            myImg.attr('src', DET_SHOW);
        }
        return false;
    });

    $('.lnkLevel').click(function () {
        $('.lnkLevel.lnkSelected').removeClass("lnkSelected");
        $(this).addClass("lnkSelected");
        var level_id = $(this).attr('id').split('_')[2];
        showLevel(level_id);
        return false;
    });

    $('#lnkDuration').click(function () {
        if ($(this).hasClass("lnkSelected")) {
            $(this).removeClass("lnkSelected");
            $(".duration_total").hide();
        } else {
            $(this).addClass("lnkSelected");
            $(".duration_total").show();
        }
        return false;
    });

    $('#lnkTargets').click(function () {
        if ($(this).hasClass("lnkSelected")) {
            $(this).removeClass("lnkSelected");
            $(".det_target_title, .det_target").hide();
        } else {
            $(this).addClass("lnkSelected");
            $(".det_target_title, .det_target").show();
        }
        return false;
    });

    $('#lnkComments').click(function () {
        if ($(this).hasClass("lnkSelected")) {
            $(this).removeClass("lnkSelected");
            $(".det_comment_title, .det_comment").hide();
        } else {
            $(this).addClass("lnkSelected");
            $(".det_comment_title, .det_comment").show();
        }
        return false;
    });

    $('#lnkExplodeOpen').click(function () {
        $(".event").show();

        return false;
    });

    $(".event").hide();
    $(".subnodes").hide();
    $("#1_0_id").show();

    $('#lnk_lvl_2').click();

    $('#lnkExplodeOpen').click();
    $('#lnkDuration').click();
    $('#lnkDuration').click();
    $('#lnkTargets').click();
    $('#lnkComments').click();

    var total_count = $("div.ok").length;
    for (var i = 1; i < levels.length; i++) {
        var class_name = levels[i];
        var elements_count = $("div." + class_name).length;
        $("#lnk_lvl_" + i).find(".e_count").html(elements_count);

        total_count = total_count + elements_count;
    }

    $("#lnk_lvl_0").find(".e_count").html(total_count);
});

function toggleNode(startId) {
    var myImg = $("#child_img_" + startId);
    if (myImg.attr('src') == IMG_MINUS) {
        hideSubnodesDiv(startId);
    }
    else {
        showSubnodesDiv(startId);
        showSubnodes(startId);
    }
}

function showSubnodesDiv(startId) {
    var myImg = $("#child_img_" + startId);
    $("#subnodes_" + startId).show();
    myImg.attr('src', IMG_MINUS);
}
function hideSubnodesDiv(startId) {
    var myImg = $("#child_img_" + startId);
    $("#subnodes_" + startId).hide();
    myImg.attr('src', IMG_PLUS);
}
function showSubnodes(startId) {
    $("#subnodes_" + startId + " div.event").show();
}

function showAllParents(j_element) {
    //.parent to skip current node
    var parent_event = j_element.parent().closest(".event");
    if (parent_event.length < 1) {
        return false;
    }

    parent_event.show();
    var parent_start_id = parent_event.attr('id').split('_')[0];
    showSubnodesDiv(parent_start_id);
    showAllParents(parent_event);
    return false;
}

function showLevel(logLevel) {
    $(".event").hide();
    $(".subnodes").hide();
    $(".img_show_childs").attr('src', IMG_PLUS);
    $("#1_0_id").show();

    if (logLevel > levels.length - 1) {
        $(".img_show_childs").attr('src', IMG_PLUS);
        return false;
    }

    for (var i = logLevel; i < levels.length; i++) {
        class_name = levels[i];
        //elements = $("div[class^="+class_name+"]");
        elements = $("div[class*=" + class_name + "]");
        elements.each(function (index) {
            $(this).show();
            showAllParents($(this));
        });
    }
    return false;
}